﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Web.DynamicData;
using RogerioCoimbra.DivulgacaoEspirita.Dominio;
using RogerioCoimbra.DivulgacaoEspirita.Site.Aplicacao;
using RogerioCoimbra.DivulgacaoEspirita.Site.Aplicacao.DadosDinamicos;

namespace RogerioCoimbra.DivulgacaoEspirita.Site.CustomPages
{
	public partial class Insert : System.Web.UI.Page
	{
		protected MetaTable table;

		protected void Page_Init(object sender, EventArgs e)
		{
			DynamicDataManager1.RegisterControl(DetailsView1);
			table = DetailsDataSource.GetTable();
			DetailsView1.RowsGenerator = new GerenciadorCamposInserir(table);
		}

		protected void Page_Load(object sender, EventArgs e)
		{
			table = DetailsDataSource.GetTable();
			Title = table.DisplayName;
		}

		protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
		{
			if (e.CommandName == DataControlCommands.CancelCommandName)
			{
				Response.Redirect(table.ListActionPath);
			}
		}

		protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
		{
			if (e.Exception != null)
			{
				string mensagemErro = null;

				switch (e.Exception.GetBaseException().GetType().Name)
				{
					case "SqlException":
						if (e.Exception.GetBaseException().Message.IndexOf("Violation of UNIQUE KEY") != -1)
						{
							switch (table.Name)
							{
								case "Jornal":
									mensagemErro = "O jornal não pode ser inserido, pois o valor do campo 'Editado' já existe e não pode ser repetido.";
									break;
								case "Usuario":
									mensagemErro = "O usuário não pode ser inserido, pois o valor do campo 'Login' já existe e não pode ser repetido.";
									break;
								case "Visitante":
									mensagemErro = "O usuário não pode ser inserido, pois o valor do campo 'E-mail' já existe e não pode ser repetido.";
									break;
								case "PalestraUsuario":
									mensagemErro = "A relação entre palestra e usuário não pode ser inserida, pois o valor dos campos 'Palestra' e 'Usuário' já existem para o valor do campo 'Data' e não podem ser repetidos.";
									break;
							}
						}
						break;
					case "DominioException":
						mensagemErro = e.Exception.GetBaseException().Message;
						break;
					default:
						mensagemErro = String.Format("{0} {1}", "Erro desconhecido: ", e.Exception.GetBaseException().Message);
						break;
				}

				Page.Validators.Add(MensagemValidacao.Criar(mensagemErro));
			}
			else
			{
				Response.Redirect(table.ListActionPath);
			}
		}
	}
}
